package string;
//String 不适合频繁修改内存开销大，性能低下
//StringBuilder修改字符串的性能,(运算量大的话可以很快反应)
//为了解决这个问题，java提供了一个用于修改字符串的API：StringBuilber
//StringBuilber内部维护一个可变的char数组，修改性能高，开销小。并且提供了便于修改
 //StringBuffer是并发安全的，StringBuilder不是并发安全的。功能上他们是一致的
//StringBuffer builder=new StringBuffer(str);
//字符串的相关操作：增删改查等
public class Stringo {
    public static void main(String[] args) {
        String str="加油就是个开发";
//       创建StringBuilder常见的构造器
//         StringBuilder builder=new StringBuilder();//内部默认表示一个空字符串
//        创建StringBuilder的同时将给定的字符串内容复制一份到内部
        StringBuilder builder=new StringBuilder(str);
        builder.append(2);//增加东西
//        将builder内部字符串从下标0到1（不含）的内容替换为给定的字符串
        String s = "123";
        builder.replace(0,3,s);
        builder.delete(0,2);//删除指定位置
        builder.insert(0,"yin");//插入指定位置
        builder.reverse();//翻转字符串内容
//        StringBuilder只是修改字符串的工具类，并非String本身
//        当使用StringBuilder修改内容后，可以调用toString方法得到内部的字符串内容
       String line =builder.toString();
       System.out.println(line);
        System.out.println(str);//String是不变对象，内容没有发生变化
        System.out.println(builder);//改变的是StringBuilder内部字符串内容
    }
}
